1. Field of the Invention
The present invention relates to the fast rendering of curved surfaces on a computer graphics display device. More particularly, the present invention relates to the quick patch level tests that speed up display of such surfaces. An example of these tests permits process of face culling on a patch level to eliminate backfacing patches before time consuming processing of the patches is performed.
2. Art Background
In the past, computer graphic systems required extensive display and computer resources. The amount of computation time required to render images was substantial. Images of any complexity required powerful computers to process hours in order to generate an image. Today the technology has greatly improved. The rendering of three-dimensional objects is no longer a process reserved for high-powered mainframe computers. The rendering of complex graphic objects is now realized on smaller, less powerful computers. Furthermore, graphics processes have become more sophisticated. In particular, the utilization of sophisticated graphics primitives is now prevalent. However, the usefulness of the sophisticated graphics primitives is measured in part by the speed at which the computer system can render the primitive on a display device. Although graphics hardware has greatly improved, techniques to circumvent time consuming processing is always desirable.
An example of a three dimensional object is a patch, such as a polynomial or rational patch. A patch is a three dimensional surface which may be a primitive by itself or part of a more sophisticated primitive such as a non-uniform rational B-spline surface (NURBS).
To display a surface primitive such as a patch, the surface primitive is reduced to or tessellated to triangles which are then individually processed, converted to pixel data for subsequent activation on the graphics display device. The process of tessellation of each patch is a fairly expensive operation. After the surface has been tessellated, each resulting triangle is passed to the pipeline. This is illustrated in FIG. 1. A triangle is first analyzed to determine whether it is located outside the modeling clipping region in Modeling Coordinates (MC), the view clipping region, or faces away from the viewer in World Coordinates (WC). If one of these tests is true, the triangle is rejected before performing lighting computations, clipping and rendering in Display Coordinates (DC). Similar pre-processing tests can be done on a surface patch as a whole using the convex hull property of the patch. For example, model clip and view clip tests can be accomplished by checking every control point of the patch. If the patch is not rejected, it is then tessellated and each triangle is processed by the triangle pipeline.
However, it is not apparent how to perform face culling on a patch level. The importance of back face rejections, at the primitive or the patch level has been recognized as key to increased, processing speed. The present invention provides this capability. In addition to face culling, the technique provides other information about the patch that can speed up processing even further. In particular, the technique allows to determine whether the patch is frontfacing, backfacing, has silhouette lines, as well as whether a given light source has any influence on the patch.